音频使用参考
1. AI(audio input)使用参考¶
1.1. AI支持的输入接口类型¶
AI目前支持amic,dmic,i2s,linein,对应的规格如下:
接口类型 | 最大通道 | 采样率 | 采样位深 | 声道 |
---|---|---|---|---|
amic | 3 | 8/16/32/48 KHz | 16bit | STEREO/MONO |
dmic | 4 | 8/16/32/48 KHz | 16bit | STEREO/MONO |
I2s | 标准2路,TDM8路 | 8/16/32/48 KHz(可提供mclk) | 16bit | STEREO/MONO |
linein | 3 | 8/16/32/48 KHz | 16bit | STEREO/MONO |
1.2. AI支持的device ID¶
AI初始化时传入不同的device ID代表使用不同的接口类型,具体如下:
Device ID | 接口类型 |
---|---|
AI_DEV_ID_ADC_0_1 (0) | 两路amic |
AI_DEV_ID_DMIC (1) | dmic |
AI_DEV_ID_I2S_RX (2) | I2s |
AI_DEV_ID_LINE_IN (3) | Line in |
AI_DEV_ID_ADC_2 (4) | 一路amic |
AI_DEV_ID_ADC_0_1_2 (5) | 3路amic |
1.3. Amic使用场景¶
-
1路amic使用场景
一路amic主要用在楼宇对讲的使用场景,用来采集一路声音实现室内外机对讲功能。
使用前需要先跟硬件确认amic接的是哪一组:
对应的device ID和channel index分别为:
Pin Device ID Channel Index PAD_AUD_MICIN0 0/5 0 PAD_AUD_MICIN1 0/5 1 PAD_AUD_MICIN2 ⅘ 2 参考使用Demo如下:
-
2路amic使用场景
2路amic主要用在智能电话机双路采集的场景,分别用来给手柄 & 听筒做音频采集传输。
使用前也需要跟硬件确认接的是哪两组pin,对应的device ID和channel index分别如下:
Pin Device ID Channel Index PAD_AUD_MICIN0 & PAD_AUD_MICIN1 0/5 0 & 1 参考Demo如下:
上面的Demo是2路amic分别采集两路MONO的数据,如果需要用2路amic分别采集L/R stereo的数据,pin脚和device ID & channel index的对应关系如下:
Pin Device ID Channel Index PAD_AUD_MICIN0 & PAD_AUD_MICIN1 0/5 0 参考Demo如下:
-
3路Amic使用场景
3路Amic主要用在智能电话机使用场景,分别用来给手柄 & 听筒 & 耳机做音频采集。Pin脚和Device ID & Channel Index对应关系如下:
Pin Device ID Channel Index PAD_AUD_MICIN0 & PAD_AUD_MICIN1 5 0 & 1 参考Demo如下:
1.4. Dmic使用场景¶
-
将pin配置成dmic mode
使用dmic前需要先跟硬件确认使用的哪组pin,然后在pioneer3.dtsi文件中把digmic-padmux配置成对应的Mode,例如公版使用的是PAD_KEY6 (D1) & PAD_KEY7 (D0) & PAD_KEY8 (CLK),对应的dtsi配置如下:
-
4 dmic的使用场景
Dmic在使用时不管使用的是2dmic还是4dmic使用的device ID都是AI_DEV_ID_DMIC (1),使用ChannelCount来决定具体需要采集几路音频,参考Demo使用如下:
1.5. I2s RX使用场景¶
-
I2s rx pin脚配置
使用i2s rx前,需要先跟硬件确认使用的是哪组pin,然后在对应的padmux里面配置成对应的Mode,例如公版使用的是PAD_GPIO3 & PAD_GPIO4 & PAD_GPIO5,对应的配置如下:
<PAD_GPIO3 PINMUX_FOR_I2S_RX_MODE_6 MDRV_PUSE_I2S_WCK>, <PAD_GPIO4 PINMUX_FOR_I2S_RX_MODE_6 MDRV_PUSE_I2S_BCK>, <PAD_GPIO5 PINMUX_FOR_I2S_RX_MODE_6 MDRV_PUSE_I2S_SDI>,
使用的pin和mode的对应关系参考硬件资料的HW CheckList。
-
普通两路i2s使用场景
普通两路i2s rx的使用Demo参考如下:
-
TDM i2s使用场景
如果需要接收超过两路的i2s数据,需要用到TDM i2s,对应的参考Demo如下(以4路为例,需要8路改channel num即可):
1.6. Line In的使用场景¶
Line in的使用方式跟amic一样,只是设定Gain的方式不一样,具体参考AI API文档说明。
2. AO(audio output)使用场景参考¶
2.1. AO支持的输出接口类型¶
接口类型 | 最大channel | 采样率 | 采样深度 | 声道 |
---|---|---|---|---|
Line out | 2 | 8/11.025/12/16/22.05/32/44.1/48KHz | 16bit | STEREO/MONO |
I2s tx | 2 | 8/16/32/48 KHz(可提供mclk) | 16bit | STEREO/MONO |
HeadPhone | 1 | 8/11.025/12/16/22.05/32/44.1/48KHz | 16bit | MONO |
2.2. AO支持的Device ID¶
Device ID | 接口类型 |
---|---|
AO_DEV_ID_DAC0_1 (0) | 两路Lineout |
AO_DEV_ID_I2S_TX (1) | I2s |
AO_DEV_ID_DAC0 (2) | 一路Lineout |
AO_DEV_ID_DAC1 (3) | 一路Lineout |
AO_DEV_ID_HEADPHONE (4) | 耳机 |
AO_DEV_ID_LINEOUT_MIX_ADC2_AND_HEADPHONE (5) | Lineout跟耳机混合再输出(voip sidestone功能) |
AO_DEV_ID_LINEOUT_AND_HEADPHONE (6) | 两路lineout & 耳机同时输出同样的数据 |
2.3. Lineout使用场景¶
-
Lineout Amp的配置说明
支持两路Line out左右声道输出,支持单路DAC0/DAC1属性控制操作(如音量调节,mute/unmute等)
-
软件上,如果选择的是Line out模式,左右声道控制体现在MI_AO_CHN上,AoChn = 0的时候控制的是左声道,AoChn = 1的时候控制的是右声道
-
根据硬件layout可以按照以下方式配置amp_gpio
-
打开
kernel\arch\arm\boot\dts\pioneer3.dtsi
,修改sound设备树节点amp-gpio,设置PAD_SR_IO15/PAD_SR_IO16为amp_gpio的左右声道控制pin,default value值为1。 -
打开
kernel\arch\arm\boot\dts\pioneer3-ssc020a-s01a-demo-camera-padmux.dtsi
(根据实际情况打开config使用的*_padmux.dtsi),分别设置PAD_SR_IO15/PAD_SR_IO16为MDRV_PUSE_AIO_AMP_PWL/MDRV_PUSE_AIO_AMP_PWR
-
-
-
1路lineout使用场景
使用Lineout前需要先跟硬件确认接的是哪个pin:
Pin和device ID的对应关系如下:
Pin Device ID PAD_AUD_LINEOUT_L0 AO_DEV_ID_DAC0 (2) PAD_AUD_LINEOUT_R0 AO_DEV_ID_DAC1 (3) 参考使用Demo如下:
-
2路Lineout使用场景
-
两路L/R拼接使用场景
两路L/R拼接使用时,使用的Pin和Device ID对应关系如下:
Pin Device ID PAD_AUD_LINEOUT_L0 & PAD_AUD_LINEOUT_R0 AO_DEV_ID_DAC0_1 (0) 参考使用Demo如下:
-
两路Lineout单独使用场景
两路lineout单独使用场景跟一路lineout使用场景差不多,只要将1路lineout使用的场景使用DeviceID AO_DEV_ID_DAC0 & AO_DEV_ID_DAC1同时使用就可以了。
-
2.4. I2s Tx使用场景¶
-
I2s Tx pin脚配置
使用i2s tx前,需要先跟硬件确认使用的是哪组pin,然后在对应的padmux里面配置成对应的Mode,例如公版使用的是PAD_GPIO3& PAD_GPIO4 & PAD_GPIO5,对应的配置如下:
<PAD_GPIO6 PINMUX_FOR_I2S_TX_MODE_6 MDRV_PUSE_I2S_SDO>, <PAD_GPIO7 PINMUX_FOR_I2S_TX_MODE_6 MDRV_PUSE_I2S_BCK>, <PAD_GPIO8 PINMUX_FOR_I2S_TX_MODE_6 MDRV_PUSE_I2S_WCK>,
使用的pin和mode的对应关系参考硬件资料的HW CheckList。
-
普通两路i2s tx使用场景
参考使用Demo如下: